liftIO . Database.Keys.Handle.closeDbHandle
=<< Annex.getRead Annex.keysdbhandle
realindex <- liftIO $ Git.Index.currentIndexFile r
+ numsz@(numfiles, _) <- calcRestageLog (0, 0) $ \(_f, ic) (numfiles, sizefiles) ->
+ (numfiles+1, sizefiles + inodeCacheFileSize ic)
let lock = fromRawFilePath (Git.Index.indexFileLock realindex)
lockindex = liftIO $ catchMaybeIO $ Git.LockFile.openLock' lock
unlockindex = liftIO . maybe noop Git.LockFile.closeLock
[ Param "-c"
, Param $ "core.safecrlf=" ++ boolConfig False
] }
- numsz <- calcRestageLog (0, 0) $ \(_f, ic) (numfiles, sizefiles) ->
- (numfiles+1, sizefiles + inodeCacheFileSize ic)
configfilterprocess numsz $ runsGitAnnexChildProcessViaGit' r'' $ \r''' ->
Git.UpdateIndex.refreshIndex r''' $ \feeder -> do
let atend = do
ok <- liftIO (createLinkOrCopy realindex tmpindex)
<&&> catchBoolIO updatetmpindex
unless ok showwarning
- bracket lockindex unlockindex go
+ when (numfiles > 0) $
+ bracket lockindex unlockindex go
where
isunmodified tsd f orig =
genInodeCache f tsd >>= return . \case
{- A pool of "git-annex transferrer" processes
-
- - Copyright 2013-2021 Joey Hess <id@joeyh.name>
+ - Copyright 2013-2022 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU AGPL version 3 or higher.
-}
import Messages.Serialized
import Annex.Path
import Annex.StallDetection
+import Annex.Link
import Utility.Batch
import Utility.Metered
import qualified Utility.SimpleProtocol as Proto
liftIO $ forM_ pool $ \case
TransferrerPoolItem (Just t) _ -> transferrerShutdown t
TransferrerPoolItem Nothing _ -> noop
+ -- Transferrers usually restage pointer files themselves,
+ -- but when killTransferrer is used, a transferrer may have
+ -- pointer files it has not gotten around to restaging yet.
+ -- So, restage pointer files here in clean up from such killed
+ -- transferrers.
+ unless (null pool) $
+ restagePointerFiles =<< Annex.gitRepo